home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Codigo / Texto y fuentes / FamiliesList / FamiliesList.cs next >
Encoding:
Text File  |  2002-05-02  |  2.0 KB  |  67 lines

  1. //-------------------------------------------
  2. // FamiliesList.cs ⌐ 2001 by Charles Petzold
  3. //-------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7.  
  8. class FamiliesList: PrintableForm
  9. {
  10.      const int iPointSize = 12;
  11.  
  12.      public new static void Main()
  13.      {
  14.           Application.Run(new FamiliesList());
  15.      }
  16.      public FamiliesList()
  17.      {
  18.           Text = "Lista de familias de fuentes";
  19.      }
  20.      protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
  21.      {
  22.           Brush        brush = new SolidBrush(clr);
  23.           float        x = 0, y = 0, fMaxWidth = 0;
  24.           FontFamily[] aff = GetFontFamilyArray(grfx);
  25.  
  26.           foreach (FontFamily ff in aff)
  27.           {
  28.                Font  font  = CreateSampleFont(ff, iPointSize);
  29.                SizeF sizef = grfx.MeasureString(ff.Name, font);
  30.  
  31.                fMaxWidth = Math.Max(fMaxWidth, sizef.Width);
  32.           }
  33.           foreach (FontFamily ff in aff)
  34.           {
  35.                Font  font    = CreateSampleFont(ff, iPointSize);
  36.                float fHeight = font.GetHeight(grfx);
  37.  
  38.                if (y > 0 && y + fHeight > cy)
  39.                {
  40.                     x += fMaxWidth;
  41.                     y  = 0;
  42.                }
  43.                grfx.DrawString(ff.Name, font, brush, x, y);
  44.  
  45.                y += fHeight;
  46.           }
  47.      }
  48.      protected virtual FontFamily[] GetFontFamilyArray(Graphics grfx)
  49.      {
  50.           return FontFamily.Families;
  51.      }
  52.      Font CreateSampleFont(FontFamily ff, float fPointSize)
  53.      {
  54.           if (ff.IsStyleAvailable(FontStyle.Regular))
  55.                return new Font(ff, fPointSize);
  56.  
  57.           else if (ff.IsStyleAvailable(FontStyle.Bold))
  58.                return new Font(ff, fPointSize, FontStyle.Bold);
  59.  
  60.           else if (ff.IsStyleAvailable(FontStyle.Italic))
  61.                return new Font(ff, fPointSize, FontStyle.Italic);
  62.  
  63.           else
  64.                return Font;
  65.      }                                        
  66. }
  67.